/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gestionform;

import dao.exception.DAOCoursException;
import dao.exception.DAOExamenException;
import dao.exception.DAONoteException;
import dao.interfaces.DAOCours;
import dao.interfaces.DAOExamen;
import dao.interfaces.DAONote;
import java.util.ArrayList;
import model.Cour;
import model.Etudiant;
import model.Examen;
import model.Moyenne;
import model.Note;

/**
 *
 * @author Paul
 */
public class GestionRecapNotes extends GestionInfos {

    private DAOExamen daoExamen;
    private DAOCours daoCours;
    private DAONote daoNote;

    public GestionRecapNotes(DAOExamen daoExamen, DAOCours daoCour, DAONote daoNote) {
        this.daoExamen = daoExamen;
        this.daoCours = daoCour;
        this.daoNote = daoNote;
    }

    public ArrayList<Moyenne> affMoyennes(Etudiant etu) {
        ArrayList<Cour> cours = new ArrayList<Cour>();
        ArrayList<Moyenne> tableau = new ArrayList<Moyenne>();
        Note note;
        //  Etudiant etu = e.rechercheEtudiant(login, mdp);
        try {
            cours = daoCours.findCoursEtudiant(etu.getId());//recherche de tous les cours de l'etudiant
        } catch (DAOCoursException daoc) {
            resultat = daoc.getMessage();
        }
        for (Cour cour : cours) {
            float addNote = 0;
            int nbNote = 0;
            int noCour = cour.getIdCour();
            try {
                ArrayList<Examen> examens = daoExamen.getExamFromCour(noCour);//recupère tous les exam depuis un cour
                for (Examen exam : examens) {//boucle sur tous les exam
                    try {
                        note = daoNote.findNoteEtudiantExam(etu.getId(), exam.getId());//récuperation de la note de l'exam
                        if (note != null) {
                            nbNote += 1;
                            addNote += note.getNote();
                        }
                    } catch (DAONoteException daon) {
                        resultat = daon.getMessage();
                    }
                }
                if (nbNote != 0) {
                    tableau.add(new Moyenne(cour.getNomCour(), cour.getCoefCour(), addNote / nbNote));
                }
            } catch (DAOExamenException dao) {
                resultat = dao.getMessage();
            }
        }
        return tableau;
    }
}
